
import java.awt.Menu;
import java.awt.MenuBar;
import java.awt.MenuItem;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.awt.event.ComponentAdapter;
import java.awt.event.ComponentEvent;
import javax.swing.JFrame;
import javax.swing.JOptionPane;

public class Fenetre extends JFrame {
    PanneauCadre            panneauCadre;
    boolean vecteur1d;

    private MenuBar         mnubMenu;
    private Menu            mnuFichier;
    private Menu            mnuAide;
    private MenuItem        mnuiSelection;
    private MenuItem        mnuiQuitter;
    private MenuItem        mnuiAPropos;

    private static Fenetre instance;

    private ActionManager eventMan;

    private Fenetre()
    {
        super();
        this.setLocation(100, 100);
        this.setTitle("Machin");
        this.setSize(800, 600);

        eventMan = new ActionManager();

        panneauCadre = new PanneauCadre(this);

        this.add(panneauCadre);
        this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);

        mnubMenu = new MenuBar();
        mnuFichier = new Menu("Fichier");
        mnuAide = new Menu("?");
        mnuiSelection = new MenuItem("Type de problème...");
        mnuiQuitter = new MenuItem("Quitter");
        mnuiAPropos = new MenuItem("À propos...");

        mnuFichier.add(mnuiSelection);
        mnuFichier.add(mnuiQuitter);
        mnuAide.add(mnuiAPropos);

        mnubMenu.add(mnuFichier);
        mnubMenu.add(mnuAide);

        this.setMenuBar(mnubMenu);

        mnuiSelection.addActionListener(eventMan);
        mnuiQuitter.addActionListener(eventMan);
        mnuiAPropos.addActionListener(eventMan);
        
        this.addComponentListener(new EventManager());
    }

    public static Fenetre getInstance(){
        if(instance==null){
            instance=new Fenetre();
        }
        return instance;
    }

    public PanneauCadre getPanneauCadre() { return panneauCadre; }

    class EventManager extends ComponentAdapter
    {
        @Override
        public void componentShown(ComponentEvent e)
        {
            for (int i = 0; i < 2; i++) {
                panneauCadre.getPanneauUtilisateur().getPanneauDonnee().getVoitureDonnee(i).init();
                panneauCadre.getPanneauUtilisateur().getPanneauResultat().getVoitureResultat(i).init();
            }

            repaint();
        }
    }

    class ActionManager implements ActionListener
    {
        @Override
        public void actionPerformed(ActionEvent ae)
        {
            if (ae.getSource() == mnuiSelection)
            {
                dispose();
                Collisions.getInstance().setVisible(true);
            } else if (ae.getSource() == mnuiQuitter)
            {
                if (JOptionPane.showConfirmDialog(null, "Êtes-vous sûr de vouloir " +
                        "quitter le programme?", "Fermeture de l'application",
                        JOptionPane.YES_NO_OPTION) == 0)
                    System.exit(0);
            } else if (ae.getSource() == mnuiAPropos)
            {
                JOptionPane.showMessageDialog(null, "Valérie Bigeault-Villeneuve\n" +
                        "Gauthier Viau");
            }
        }
    }
}
